package controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import pojo.User;
import service.UserService;
import util.Page;

import java.util.List;

@Controller
//为了让springmvc能识别这个类，需要加注解
@RequestMapping("/user")
//相当于servlet的路径

//tomcat帮忙实例化servlet
public class UserController {
    @Autowired
    private UserService userService;

    //servlet五个if判断，在这里写成五个方法
//    @RequestMapping("/index")
//    public String index() {
//        //逻辑视图名
//        return "index";//  请求  /user/index 返回index.jsp
//        //框架打开资源
//    }

    //return 返回字符串，可以解决请求转发的问题
    //springmvc中有个bean 叫做视图解析器，默认是转发，可以修改为重定向，靠返回前缀后缀，返回逻辑视图名
    //正常情况下，返回逻辑视图名，springmvc会自动拼接前缀和后缀，转发到jsp页面
    //一般不能直接访问webinf
    @RequestMapping("/login")
    public String login(User user) {
        //登录逻辑
        boolean flag = userService.login(user);
        if (flag) {
            // /WEB-INF/user/list.jsp
            return "index";
        } else {
            return "login";//login在user目录外部，不需要加user/
        }
        //方法上写参数，自动入参，必须与user类的值一致，才能自动映射过来

    }
    @RequestMapping("/toregist")
    public String toRegist() {
        return "regist";
    }
   @RequestMapping("/list/{currentPage}")//因为要访问user/list，所有这里写list
    public String list(User user, @PathVariable("currentPage") Integer currentPage, Model model){//model相当于request
        //查询数据
       Page page = new Page();
       int totalCount=userService.count(user);
       page.setTotalCount(totalCount);
       page.setCurrentPage(currentPage);
       page.setTotalPage();//拿数据条数

       //偏移量
       int offset=(currentPage-1)*page.getPageSize();
      List<User> users= userService.findAll(user,offset,page.getPageSize());//拿数据

       //数据返回
       model.addAttribute("users",users);
       model.addAttribute("page",page);
       model.addAttribute("user",user);




        return "user/list";
    }
    @RequestMapping("/toadd")
    public String toAdd() {
        return "user/add";
    }
    @RequestMapping("/addSave")
    public String addSave(User user) {
        int result=userService.addUser(user);
        if(result>0){
        return "redirect:/user/list/1";//重定向到list第一页
        }else {
            return "user/add";//打开页面，不加/，重定向，加/
        }
    }
    @RequestMapping("/delete/{id}")
    public String deleteById(@PathVariable("id") int id) {
        int result=userService.deleteUserById(id);
        return result>0 ? "redirect:/user/list/1":"error";
    }
    @RequestMapping("/toupdate/{id}")
    public String toUpdate(@PathVariable("id") int id, Model model) {
        //User user=userService.findById(id);
        User user=userService.findUserById(id);
        model.addAttribute("user",user);
        return "user/update";
    }
    @RequestMapping("/updateSave")
    public String updateSave(User user) {
        int result=userService.updateUser(user);
        if(result>0){
            return "redirect:/user/list/1";//重定向到list第一页
        }else {
            return "user/update";//打开页面，不加/，重定向，加/
        }
    }

    @RequestMapping("/checkUserNameUnique")
    @ResponseBody
    public String checkUserNameUnique(@RequestParam("name") String name) {
       int count=userService.findUserByName(name);

        if(count>0){
            return "false";//用户名存在,不能用
            //默认找视图解析器，找页面，找不到就报错，报错在页面检查里
        }else {
            return "true";
        }
    }
    //用户密码重复校验，不写后端
    //注册数据传入
}

